1. The Field of the Invention
The present invention relates to data processing and, more particularly, to securely and efficiently extending data pipeline processing functionality.
2. Background and Relevant Art
Computer systems and related technology affect many aspects of society. Indeed, the computer system's ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, and database management) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another and to other electronic devices to form both wired and wireless computer networks over which the computer systems and other electronic devices can transfer electronic data. As a result, many tasks performed at a computer system (e.g., voice communication, accessing electronic mail, controlling home electronics, Web browsing, and printing documents) include the exchange of electronic messages between a number of computer systems and/or other electronic devices via wired and/or wireless computer networks.
Networks have in fact become so prolific that a simple network-enabled computing system may communicate with any one of millions of other computing systems spread throughout the globe over a conglomeration of networks often referred to as the “Internet”. Such computing systems may include desktop, laptop, or tablet personal computers; Personal Digital Assistants (PDAs); telephones; or any other computer or device capable of communicating over a digital network.
In particular, electronic mail has become an important method for communicating. To create an electronic mail message, a sending user typically manipulates input devices, such as a keyboard and mouse, within an electronic mail application to enter data (e.g. text and attachments) into the electronic mail message. The sending user also typically includes an electronic mail address of a recipient user in the electronic message, for example, by entering text in the “To” field. The sending user then sends the electronic mail message to the recipient user by selecting a “Send” control within the electronic mail application. Sending the electronic message can cause the electronic mail message to be routed from the sending user's computer system, through one or more intermediate mail servers, to a destination mail server that stores electronic mail messages for the recipient user (e.g., in accordance with the Simple Mail Transfer Protocol (“SMTP”). To view the electronic mail message, the recipient user establishes a connection from an electronic mail application (at the recipient user's computer system) to the receiving mail server (e.g., in accordance with the Post Office Protocol (“POP”) or Internet Message Access Protocol (“IMAP”)).
At each mail server, the electronic message is transferred through a message processing pipeline. The message processing pipeline can include one or more modules that perform different actions to the electronic mail message and/or in response to receiving the electronic message. For example, a message processing pipeline can establish an SMTP connection (in accordance with SMTP commands) to receive the electronic mail message, can perform one or more operations based on the contents of the electronic message (e.g., determine how to route the message based on the destination Internet Protocol (“IP”) address), and establish an SMTP connection in accordance with SMTP commands) to route the message towards a destination mails server. At a destination mail server, a message processing pipeline can also implement additional functionality, such as, for example, running mail rules against the electronic message and scanning the electronic mail message for malicious programs.
During message pipeline development, developers typically have access to tools that allow virtually any functionality to be built-into a message processing pipeline. For example, if standards for a protocol are updated, a message processing pipeline can be re-designed to implement the updated standards. Thus, during development, message processing pipelines can be developed to include the latest electronic messaging technology. Accordingly, newer versions of email server software can, from time to time, be released such that electronic mail users can benefit from advancements in messaging technology.
However, while email users may require and/or desire a plethora of specialized features, email server software has been traditionally distributed as a “one size fits all” package. That is, electronic mail server software has been made available to computer users as a bundled package that includes all of the commands, features and formats of that specific system. Thus, when a user desires a specific command, function or format that is not included in the system package, for example, not included in a message processing pipeline, that user must frequently wait until the designer of the email server software includes the specialized feature in a newer version of the email package.
In the upgraded version, the new feature is generally bundled with a variety of other features. Thus, this traditional method for obtaining the desired feature forces users to upgrade the entire email server software package in order to pick up the incremental feature, and frequently requires users to receive features that are not desired or needed simply because they were bundled with the desired feature. This process of needing to upgrade the system in order to obtain a desired feature results in the consumption of large amounts of money and/or storage space for individuals and businesses.
Unfortunately, after email server software is released, it is difficult, if not impossible, to securely extend the functionality of the email server software. Users with significantly advanced technical skills may, to some extent, be able to design add-on modules to interact with the email server software, for example to interact with a message processing pipeline. However, there is now way to insure that an add-on module will appropriately interact with the email server software or that a designed module is not malicious (e.g., contains a Trojan Horse, virus, etc.). Thus, execution of an add-on module can, either intentionally or unintentionally, cause a message processing pipeline or other emails server software modules to fail. Accordingly, end-users may choose not to utilize add-on modules and may instead wait for the next version of the email server software.
Further, even if an add-on module is designed to appropriately interact with a message processing pipeline, installation of the add-on module may be difficult. For example, a user may be required to manipulate configuration settings of the email server software and run a number of patch programs to install the add-on module. Thus, installing an add-on module can be time consuming and many email users may lack required technical skills for performing such an installation. Further, it may be difficult, even for a technically proficient user, to identify the configuration settings that require manipulation and to identify the required patch programs.
Further, the inability to easily extend the functionality email server software, can prevent end-users from customizing a message processing pipeline to meet their particular needs. For example, a corporation may desire to extend message processing pipeline functionality to insure that electronic mail messages transferred through the message processing pipeline conform with unique corporate policies. However, since this functionality is limited to a small subset of customers (or single customer), it may be difficult to get the message processing pipeline developer to implement such functionality. Thus, the corporation may simply have no way to enforce the unique corporate polices on electronic mail messages (or is at least forced to wait for a newer version of the message processing pipeline). Therefore systems, methods, and computer program products that facilitate securely and efficiently extending data processing pipeline functionality would be advantageous.